#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# @Date : 2024/3/27 15:49
# @Author : water
# @Description : 循环语句

"""
Python3 循环语句
    Python 中的循环语句有 for 和 while。

while 循环
    Python 中 while 语句的一般形式：
        while 判断条件(condition)：
            执行语句(statements)……
    注意：同样需要注意冒号和缩进。另外，在 Python 中没有 do..while 循环。
无限循环
    我们可以通过设置条件表达式永远不为 false 来实现无限循环，
    你可以使用 CTRL+C 来退出当前的无限循环。
    无限循环在服务器上客户端的实时请求非常有用。
while 循环使用 else 语句
    如果 while 后面的条件语句为 false 时，则执行 else 的语句块。
    语法格式如下：
        while <expr>:
            <statement(s)>
        else:
            <additional_statement(s)>
        expr 条件语句为 true 则执行 statement(s) 语句块，如果为 false，则执行 additional_statement(s)。
    循环输出数字，并判断大小：
简单语句组
    类似 if 语句的语法，如果你的 while 循环体中只有一条语句，你可以将该语句与 while 写在同一行中

for 语句
    Python for 循环可以遍历任何可迭代对象，如一个列表或者一个字符串。
    for循环的一般格式如下：
        for <variable> in <sequence>:
            <statements>
        else:
            <statements>

for...else
    在 Python 中，for...else 语句用于在循环结束后执行一段代码。
    语法格式如下：
        for item in iterable:
            # 循环主体
        else:
            # 循环结束后执行的代码
    当循环执行完毕（即遍历完 iterable 中的所有元素）后，会执行 else 子句中的代码，如果在循环过程中遇到了 break 语句，则会中断循环，此时不会执行 else 子句。
break 和 continue 语句及循环中的 else 子句
    break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止，任何对应的循环 else 块将不执行。
    continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句，然后继续进行下一轮循环。

注意：循环语句可以有 else 子句，它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行，但循环被 break 终止时不执行。

pass 语句
    Python pass是空语句，是为了保持程序结构的完整性。
    pass 不做任何事情，一般用做占位语句
"""
#  循环语句: 求和
m = 100
n = 0
sm = 0
while n <= m:
    sm += n
    n += 1
print("1 到 %d 之间的整数的和为：%d" % (m, sm))

# 无限循环
while True:
    s = input("请输入：")
    if s == "q":
        break
    print("你输入的内容是：", s)

# while 循环使用 else 语句
while True:
    print("请输入用户名和密码：")
    name = input("UserName:")
    password = input("Password:")
    if name == "admin" and password == "123456":
        print("登录成功！")
        break
    else:
        print("用户名或密码错误！")

# 简单语句组
flag = 1
# while flag: print('欢迎访问菜鸟教程!')
print("Good bye!")

# for 循环
# 整数范围值可以配合 range() 函数使用：
for i in range(5):
    print(i)

# 列表循环
sites = ["Baidu", "Google", "Runoob", "Taobao"]
for site in sites:
    print(site)

# 字符串循环
for i in "Runoob":
    print(i)

# for...else
for i in range(5):
    print(i)
else:
    print("i is no longer less than 5")

# 以下 for 实例中使用了 break 语句，break 语句用于跳出当前循环体，不会执行 else 子句
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("i is no longer less than 5")

#  range() 指定区间的值：
for i in range(5, 30):
    if i == 15:
        break
    print(i)
#  range() 以指定数字开始并指定不同的增量(甚至可以是负数，有时这也叫做'步长'):
for i in range(5, 30, 3):
    print(i)

# 步长是负数时，range() 函数的用法如下：
for i in range(30, 5, -3):
    print(i)

# 结合 range() 和 len() 函数以遍历一个序列的索引
for i in range(len(sites)):
    print(i, sites[i])

# break 和 continue 语句及循环中的 else 子句

for i in range(10):
    if i == 5:
        break
    print(i)
else:
    print("i is no longer less than 5")

# continue
for i in range(10):
    if i == 5:
        continue
    print(i)
# pass 语句
for i in range(10):
    pass
